﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Grafica.ClienteWS;

// AGREGO REFERENCIAS PARA LOS REPORTES
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;

using System.IO;
using System.Diagnostics;


namespace Grafica
{
    

    public partial class Principal : Form
    {
        string usuario;

        public Principal(string usuario)
        {
            InitializeComponent();
            this.usuario = usuario;
        }

        public void SetModo(String modo)
        {
            if (modo == "admin")
            {
                tesoreroToolStripMenuItem.Enabled = false;
                
            }
            else if (modo == "tesorero")
                 { 
                   administradorToolStripMenuItem.Enabled = false;
                 }
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult preguntaSalida;
            preguntaSalida = MessageBox.Show("¿Está seguro que desea salir de la aplicación?", "Salir", MessageBoxButtons.OKCancel);

            if (preguntaSalida == DialogResult.OK)
                Application.Exit();
        }

        private void cambiarUsuarioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
            
            Login ventanaLogin = new Login();
            ventanaLogin.ShowDialog();
        }


        //Gasto
        private void gastoToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            ABMGasto GastoSingleton = ABMGasto.Instance();

            GastoSingleton.MdiParent = this;

            GastoSingleton.Show();
        }

        //Empleado
        private void empledoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ABMEmpleado EmpleadoSingleton = ABMEmpleado.Instance();

            EmpleadoSingleton.MdiParent = this;

            EmpleadoSingleton.Show();
        }

        //Proveedor
        private void proveedorToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            ABMProveedor ProvedorSingleton = ABMProveedor.Instance();

            ProvedorSingleton.MdiParent = this;

            ProvedorSingleton.Show();
        }

        //Coche
        private void cocheToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            ABMCoche CocheSingleton = ABMCoche.Instance();

            CocheSingleton.MdiParent = this;

            CocheSingleton.Show();
        }

        //Boleta desde tesorero
        private void boletaToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataCoche[] coches = ws.ListarCoches();
            DataEmpleado[] conductores = ws.ListarConductores();

            if (conductores.Length > 0 && coches.Length > 0)
            {
                Boleta BoletaSingleton = Boleta.Instance();

                BoletaSingleton.MdiParent = this;

                BoletaSingleton.Show();
            }
            else if (conductores.Length < 1)
            {
                MessageBox.Show("Aún no se han ingresado conductores", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            } else if (coches.Length < 1)
            {
                MessageBox.Show("Aún no se han ingresado coches", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            } else
            {
                MessageBox.Show("Aún no se han ingresado coches ni conductores", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
            
            
        }

        private void controlarBoletasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataBoleta[] boletas = ws.ListarBoletas();

            if (boletas.Length > 0)
            {
                ControlBoletas ControlBoletasSingleton = ControlBoletas.Instance();

                ControlBoletasSingleton.MdiParent = this;

                ControlBoletasSingleton.Show();
            }
            else
            {
                MessageBox.Show("Aún no se han ingresado boletas", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            NuevaContraseña nuevaContraSenia = new NuevaContraseña(this.usuario);
            nuevaContraSenia.ShowDialog();
        }

        private void proveedoresToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // info obtenida de: http://imcosta.net/2012/05/itextsharp-reportes-en-net-sin-crystal-report/
            // crea un documento y lo abro
            string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
            document.Open();

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 24);
            //parrafo.Font.SetStyle(Font.BOLD);
            //parrafo.Font.SetStyle(Font.UNDERLINE);
            parrafo.Add("Listado de Choferes");
            document.Add(parrafo);

            byte[] bytesImagen = new System.Drawing.ImageConverter().ConvertTo(Resource1.yellow_taxi_car_180, typeof(byte[])) as byte[];
            iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(bytesImagen);
            imagen.Alignment = Element.ALIGN_CENTER;
            document.Add(imagen);

            PdfPTable unaTabla = new PdfPTable(4);
            unaTabla.SetWidthPercentage(new float[] { 150, 150, 150, 150 }, PageSize.A4);

            //Headers
            unaTabla.AddCell(new Paragraph("Nombre"));
            unaTabla.AddCell(new Paragraph("Apellido"));
            unaTabla.AddCell(new Paragraph("Teléfono"));
            unaTabla.AddCell(new Paragraph("Domicilio"));

            //¿Le damos un poco de formato?
            foreach (PdfPCell celda in unaTabla.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataConductor[] conductores = ws.ListarConductores();

            if (conductores != null)
            {
                foreach (DataConductor conductor in conductores)
                {
                    string nombre = conductor.Nombre;
                    string apellido = conductor.Apellido;
                    string tel = conductor.Telefono.ToString();
                    string domicilio = conductor.Domicilio;

                    PdfPCell celda1 = new PdfPCell(new Paragraph(nombre, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda2 = new PdfPCell(new Paragraph(apellido, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda3 = new PdfPCell(new Paragraph(tel, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda4 = new PdfPCell(new Paragraph(domicilio, FontFactory.GetFont("Arial", 10)));
                    unaTabla.AddCell(celda1);
                    unaTabla.AddCell(celda2);
                    unaTabla.AddCell(celda3);
                    unaTabla.AddCell(celda4);
                }

            }            
            document.Add(unaTabla);

            // Cierrro el documento
            document.Close();

            // Muestro el pdf en pantalla
            Process prc = new System.Diagnostics.Process();
            prc.StartInfo.FileName = fileName;
            prc.Start();

        }

        private void boletasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // info obtenida de: http://imcosta.net/2012/05/itextsharp-reportes-en-net-sin-crystal-report/
            // crea un documento y lo abro
            string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
            document.Open();

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 24);
            //parrafo.Font.SetStyle(Font.BOLD);
            //parrafo.Font.SetStyle(Font.UNDERLINE);
            parrafo.Add("Listado de Boletas");
            document.Add(parrafo);

            byte[] bytesImagen = new System.Drawing.ImageConverter().ConvertTo(Resource1.yellow_taxi_car_180, typeof(byte[])) as byte[];
            iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(bytesImagen);
            imagen.Alignment = Element.ALIGN_CENTER;
            document.Add(imagen);

            PdfPTable unaTabla = new PdfPTable(2);
            unaTabla.SetWidthPercentage(new float[] { 300, 300 }, PageSize.A4);

            //Headers
            unaTabla.AddCell(new Paragraph("Columna 1"));
            unaTabla.AddCell(new Paragraph("Columna 2"));

            //¿Le damos un poco de formato?
            foreach (PdfPCell celda in unaTabla.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            PdfPCell celda1 = new PdfPCell(new Paragraph("Celda 1", FontFactory.GetFont("Arial", 10)));
            PdfPCell celda2 = new PdfPCell(new Paragraph("Celda 2", FontFactory.GetFont("Arial", 10)));
            PdfPCell celda3 = new PdfPCell(new Paragraph("Celda 3", FontFactory.GetFont("Arial", 10)));
            PdfPCell celda4 = new PdfPCell(new Paragraph("Celda 4", FontFactory.GetFont("Arial", 10)));

            unaTabla.AddCell(celda1);
            unaTabla.AddCell(celda2);
            unaTabla.AddCell(celda3);
            unaTabla.AddCell(celda4);
            document.Add(unaTabla);


            
            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataBoleta[] boletas = ws.ListarBoletas();

            /*List<DataBoleta> listaBoletas = new List<DataBoleta>();
            */

/*
            if (boletas != null)
            {
                foreach (DataBoleta boleta in boletas)
                {
                    listaBoletas.Add(boleta);


                }
            }
            */
            // Cierrro el documento
            document.Close();

            // Muestro el pdf en pantalla
            Process prc = new System.Diagnostics.Process();
            prc.StartInfo.FileName = fileName;
            prc.Start();
        }

        private void cochesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // info obtenida de: http://imcosta.net/2012/05/itextsharp-reportes-en-net-sin-crystal-report/
            // crea un documento y lo abro
            string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
            document.Open();

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 24);
            //parrafo.Font.SetStyle(Font.BOLD);
            //parrafo.Font.SetStyle(Font.UNDERLINE);
            parrafo.Add("Listado de Coches");
            document.Add(parrafo);

            byte[] bytesImagen = new System.Drawing.ImageConverter().ConvertTo(Resource1.yellow_taxi_car_180, typeof(byte[])) as byte[];
            iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(bytesImagen);
            imagen.Alignment = Element.ALIGN_CENTER;
            document.Add(imagen);

            PdfPTable unaTabla = new PdfPTable(4);
            unaTabla.SetWidthPercentage(new float[] { 150, 150, 150, 150 }, PageSize.A4);

            //Headers
            unaTabla.AddCell(new Paragraph("Matricula"));
            unaTabla.AddCell(new Paragraph("Marca"));
            unaTabla.AddCell(new Paragraph("Modelo"));
            unaTabla.AddCell(new Paragraph("Kms"));

            //¿Le damos un poco de formato?
            foreach (PdfPCell celda in unaTabla.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataCoche[] coches = ws.ListarCoches();

            if (coches != null)
            {
                foreach (DataCoche coche in coches)
                {
                    string matricula = coche.Matricula;
                    string marca = coche.Marca;
                    string kms = coche.Kms.ToString();
                    string modelo = coche.Modelo;

                    PdfPCell celda1 = new PdfPCell(new Paragraph(matricula, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda2 = new PdfPCell(new Paragraph(marca, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda3 = new PdfPCell(new Paragraph(modelo, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda4 = new PdfPCell(new Paragraph(kms, FontFactory.GetFont("Arial", 10)));
                    unaTabla.AddCell(celda1);
                    unaTabla.AddCell(celda2);
                    unaTabla.AddCell(celda3);
                    unaTabla.AddCell(celda4);
                }

            }
            document.Add(unaTabla);

            // Cierrro el documento
            document.Close();

            // Muestro el pdf en pantalla
            Process prc = new System.Diagnostics.Process();
            prc.StartInfo.FileName = fileName;
            prc.Start();
        }

        private void proveedoresToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            // info obtenida de: http://imcosta.net/2012/05/itextsharp-reportes-en-net-sin-crystal-report/
            // crea un documento y lo abro
            string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
            document.Open();

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 24);
            //parrafo.Font.SetStyle(Font.BOLD);
            //parrafo.Font.SetStyle(Font.UNDERLINE);
            parrafo.Add("Listado de Proveedores");
            document.Add(parrafo);

            byte[] bytesImagen = new System.Drawing.ImageConverter().ConvertTo(Resource1.yellow_taxi_car_180, typeof(byte[])) as byte[];
            iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(bytesImagen);
            imagen.Alignment = Element.ALIGN_CENTER;
            document.Add(imagen);

            PdfPTable unaTabla = new PdfPTable(4);
            unaTabla.SetWidthPercentage(new float[] { 150, 150, 150, 150 }, PageSize.A4);

            //Headers
            unaTabla.AddCell(new Paragraph("Nombre"));
            unaTabla.AddCell(new Paragraph("Rut"));
            unaTabla.AddCell(new Paragraph("Dirección"));
            unaTabla.AddCell(new Paragraph("Teléfono"));

            //¿Le damos un poco de formato?
            foreach (PdfPCell celda in unaTabla.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataProveedor[] proveedores = ws.ListarProveedores();

            if (proveedores != null)
            {
                foreach (DataProveedor proveedor in proveedores)
                {
                    string nombre = proveedor.Nombre;
                    string rut = proveedor.Rut;
                    string direccion = proveedor.Direccion;
                    string tel = proveedor.Telefono.ToString();

                    PdfPCell celda1 = new PdfPCell(new Paragraph(nombre, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda2 = new PdfPCell(new Paragraph(rut, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda3 = new PdfPCell(new Paragraph(direccion, FontFactory.GetFont("Arial", 10)));
                    PdfPCell celda4 = new PdfPCell(new Paragraph(tel, FontFactory.GetFont("Arial", 10)));
                    unaTabla.AddCell(celda1);
                    unaTabla.AddCell(celda2);
                    unaTabla.AddCell(celda3);
                    unaTabla.AddCell(celda4);
                }

            }
            document.Add(unaTabla);

            // Cierrro el documento
            document.Close();

            // Muestro el pdf en pantalla
            Process prc = new System.Diagnostics.Process();
            prc.StartInfo.FileName = fileName;
            prc.Start();
        }

    }
}
